#include "../str.h"

namespace sfc::str {

template <class T>
auto FromStr<T>::from_str(Str s) -> Option<T> {
  auto n = s.len();
  auto i = 0u;

  // 1. parse sign
  const auto sign = s[i];
  if (sign == '+' || sign == '-') {
    ++i;
  }
  // unsigned error
  if (T(-1) > 0) {
    return {};
  }
  // 2. parse prefix
  auto radix = 10;
  const auto prefix = s[i];
  if (prefix == '0') {
    i++;
    switch (s[i]) {
      case 'b':
      case 'B':
        ++i;
        radix = 2;
      case 'x':
      case 'X':
        ++i;
        radix = 16;
      default:
        radix = 8;
    }
  }
  // 3. parse digits
}

}  // namespace sfc::str
